home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
gnu
/
elispman.lha
/
elispman
/
elisp-34
(
.txt
)
< prev
next >
Wrap
GNU Info File
|
1993-05-11
|
47KB
|
733 lines
This is Info file elisp, produced by Makeinfo-1.52 from the input file
elisp.texi.
This file documents GNU Emacs Lisp.
This is edition 2.0 of the GNU Emacs Lisp Reference Manual, for
Emacs Version 19.
Published by the Free Software Foundation, 675 Massachusetts Avenue,
Cambridge, MA 02139 USA
Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by the Foundation.
File: elisp, Node: Display Table Format, Next: Active Display Table, Up: Display Tables
Display Table Format
--------------------
A display table is actually an
array of 261 elements.
- Function: make-display-table
This creates and returns a
display table. The table
initially has `nil' in all
elements.
The first 256 elements correspond
to character codes; the Nth element says how to display the character
code N. The value should be `nil' or a vector of glyph values (*note
Glyphs::.). If an element is `nil', it says to display that character
according to the usual display conventions (*note Usual Display::.).
The remaining five elements of a
display table serve special purposes, and `nil' means use the default
stated below.
256
The glyph for the end of a
truncated screen line (the
default for this is `$').
*Note Glyphs::.
257
The glyph for the end of a
continued line (the default is
`\').
258
The glyph for indicating a
character displayed as an octal
character code (the default is
`\').
259
The glyph for indicating a
control character (the default
is `^').
260
A vector of glyphs for
indicating the presence of
invisible lines (the default is
`...'). *Note Selective
Display::.
For example, here is how to
construct a display table that mimics the effect of setting `ctl-arrow'
to a non-`nil' value:
(setq disptab (make-display-table))
(let ((i 0))
(while (< i 32)
(or (= i ?\t) (= i ?\n)
(aset disptab i (vector ?^ (+ i 64))))
(setq i (1+ i)))
(aset disptab 127 (vector ?^ ??)))
File: elisp, Node: Active Display Table, Next: Glyphs, Prev: Display Table Format, Up: Display Tables
Active Display Table
--------------------
Each window can specify a display
table, and so can each buffer. When a buffer B is displayed in window
W, display uses the display table for window W if it has one;
otherwise, the display table for buffer B if it has one; otherwise, the
standard display table if any. The display table chosen is called the
"active" display table.
- Function: window-display-table
WINDOW
This function returns WINDOW's
display table, or `nil' if
WINDOW does not have an
assigned display table.
- Function:
set-window-display-table
WINDOW TABLE
This function sets the display
table of WINDOW to TABLE. The
argument TABLE should be either
a display table or `nil'.
- Variable: buffer-display-table
This variable is automatically
local in all buffers; its value
in a particular buffer is the
display table for that buffer,
or `nil' if the buffer does not
have any assigned display table.
- Variable: standard-display-table
This variable's value is the
default display table, used
when neither the current buffer
nor the window displaying it
has an assigned display table.
This variable is `nil' by
default.
If neither the selected window
nor the current buffer has a display table, and if the variable
`standard-display-table' is `nil', then Emacs uses the usual display
conventions. *Note Usual Display::.
File: elisp, Node: Glyphs, Next: ISO Latin 1, Prev: Active Display Table, Up: Display Tables
Glyphs
------
A "glyph" is a generalization of
a character; it stands for an image that takes up a single character
position on the screen. Glyphs are represented in Lisp as integers,
just as characters are.
The meaning of each integer, as a
glyph, is defined by the glyph table, which is the value of the
variable `glyph-table'.
- Variable: glyph-table
The value of this variable is
the current glyph table. It
should be a vector; the Gth
element defines glyph code G.
If the value is `nil' instead
of a vector, then all glyphs
are simple (see below).
Here are the possible types of
elements in the glyph table:
INTEGER
Define this glyph code as an
alias for code INTEGER. This
is used with X windows to
specify a face code.
STRING
Send the characters in STRING
to the terminal to output this
glyph. This alternative is not
available with X Windows.
`NIL'
This glyph is simple. On an
ordinary terminal, the glyph
code mod 256 is the character
to output. With X, the glyph
code mod 256 is character to
output, and the glyph code
divided by 256 specifies the
"face id number" to use while
outputting it. *Note Faces::.
If a glyph code is greater than
or equal to the length of the glyph table, that code is automatically
simple.
File: elisp, Node: ISO Latin 1, Prev: Glyphs, Up: Display Tables
ISO Latin 1
-----------
If you have a terminal that can
handle the entire ISO Latin 1 character set, you can arrange to use
that character set as follows:
(require 'disp-table)
(standard-display-8bit 0 255)
If you are editing buffers
written in the ISO Latin 1 character set and your terminal doesn't
handle anything but ASCII, you can load the file `iso-ascii' to set up
a display table which makes the other ISO characters display as
sequences of ASCII characters. For example, the character "o with
umlaut" displays as `{"o}'.
Some European countries have
terminals that don't support ISO Latin 1 but do support the special
characters for that country's language. You can define a display table
to work one language using such terminals. For an example, see
`lisp/iso-swed.el', which handles certain Swedish terminals.
You can load the appropriate
display table for your terminal automatically by writing a
terminal-specific Lisp file for the terminal type.
File: elisp, Node: Beeping, Next: Window Systems, Prev: Display Tables, Up: Emacs Display
Beeping
=======
You can make Emacs ring a bell
(or blink the screen) to attract the user's attention. Be conservative
about how often you do this; frequent bells can become irritating.
Also be careful not to use beeping alone when signaling an error is
appropriate. (*Note Errors::.)
- Function: ding &optional
DONT-TERMINATE
This function beeps, or flashes
the screen (see `visible-bell'
below). It also terminates any
keyboard macro currently
executing unless DONT-TERMINATE
is non-`nil'.
- Function: beep &optional
DONT-TERMINATE
This is a synonym for `ding'.
- Variable: visible-bell
This variable determines
whether Emacs should flash the
screen to represent a bell.
Non-`nil' means yes, `nil'
means no. This is effective
only if the Termcap entry for
the terminal in use has the
visible bell flag (`vb') set.
File: elisp, Node: Window Systems, Prev: Beeping, Up: Emacs Display
Window Systems
==============
Emacs works with several window
systems, most notably X Windows. Note that both Emacs and the X Window
System use the term "window", but use it differently. An Emacs frame
is a single window as far as X Windows is concerned; the individual
Emacs windows are not known to X Windows at all.
- Variable: window-system
This variable tells Lisp
programs what window system
Emacs is running under. Its
value should be a symbol such
as `x' (if Emacs is running
under X Windows) or `nil' (if
Emacs is running on an ordinary
terminal).
- Variable: window-system-version
This variable distinguishes
between different versions of
the X Window System. Its value
is 10 or 11 when using X
Windows; `nil' otherwise.
- Variable: window-setup-hook
This variable is a normal hook
which Emacs runs after loading
your `.emacs' file and the
default initialization file (if
any), after loading
terminal-specific Lisp code,
and after running the hook
`term-setup-hook'.
This hook is used for internal
purposes: setting up
communication with the window
system, and creating the
initial window. Users should
not interfere with it.
File: elisp, Node: Calendar, Next: Tips, Prev: Emacs Display, Up: Top
Customizing the Calendar and Diary
**********************************
There are many customizations
that you can use to make the calendar and diary suit your personal
tastes.
* Menu:
* Calendar Customizing:: Defaults you can set.
* Holiday Customizing:: Defining your own holidays.
* Date Display Format:: Changing the format.
* Time Display Format:: Changing the format.
* Daylight Savings:: Changing the default.
* Diary Customizing:: Defaults you can set.
* Hebrew/Islamic Entries:: How to obtain them.
* Fancy Diary Display:: Enhancing the diary display, sorting entries.
* Including Diary Files:: Sharing a common diary file.
* Sexp Diary Entries:: Fancy things you can do.
* Appt Customizing:: Customizing appointment reminders.
File: elisp, Node: Calendar Customizing, Next: Holiday Customizing, Up: Calendar
Customizing the Calendar
========================
If you set the variable
`view-diary-entries-initially' to `t', calling up the calendar
automatically displays the diary entries for the current date as well.
The diary dates appear only if the current date is visible. If you add
both of the following lines to your `.emacs' file:
(setq view-diary-entries-initially t)
(calendar)
they display both the calendar and
diary windows whenever you start Emacs.
Similarly, if you set the variable
`view-calendar-holidays-initially' to `t', entering the calendar
automatically displays a list of holidays for the current three month
period. The holiday list appears in a separate window.
You can set the variable
`mark-diary-entries-in-calendar' to `t' in order to place a plus sign
(`+') beside any dates with diary entries. Whenever the calendar
window is displayed or redisplayed, the diary entries are automatically
marked for holidays.
Similarly, setting the variable
`mark-holidays-in-calendar' to `t' places an asterisk (`*') after all
holiday dates visible in the calendar window.
There are many customizations
that you can make with the hooks provided. For example, the variable
`calendar-load-hook', whose default value is `nil', is a normal hook
run when the calendar package is first loaded (before actually starting
to display the calendar).
The variable
`initial-calendar-window-hook', whose default value is `nil', is a
normal hook run the first time the calendar window is displayed. The
function is invoked only when you first enter Calendar mode, not when
you redisplay an existing Calendar window. But if you leave the
calendar with the `q' command and reenter it, the hook runs again.
The variable
`today-visible-calendar-hook', whose default value is `nil', is a
normal hook run after the calendar buffer has been prepared with the
calendar when the current date is visible in the window. One use of
this hook is to replace today's date with asterisks; a function
`calendar-star-date' is included for this purpose. In your `.emacs'
file, put:
(setq today-visible-calendar-hook 'calendar-star-date)
Another standard hook function adds
asterisks around the current date. Here's how to use it:
(setq today-visible-calendar-hook 'calendar-mark-today)
A corresponding variable,
`today-invisible-calendar-hook', whose default value is `nil', is a
normal hook run after the calendar buffer text has been prepared, if
the current date is *not* visible in the window.
File: elisp, Node: Holiday Customizing, Next: Date Display Format, Prev: Calendar Customizing, Up: Calendar
Customizing the Holidays
========================
Emacs knows about holidays
defined by entries on one of several lists. You can customize theses
lists of holidays to your own needs, adding holidays or deleting lists
of holidays. The lists of holidays that Emacs uses are for general
holidays (`general-holidays'), local holidays (`local-holidays'),
Christian holidays (`christian-holidays'), Hebrew (Jewish) holidays
(`hebrew-holidays'), Islamic (Moslem) holidays (`islamic-holidays'),
and other holidays (`other-holidays').
The general holidays are, by
default, holidays common throughout the United States. To eliminate
these holidays, set `general-holidays' to `nil'.
There are no default local
holidays (but sites may supply some). You can set the variable
`local-holidays' to any list of holidays, as described below.
By default, Emacs does not
consider all the holidays of these religions, only those commonly found
in secular calendars. For a more extensive collection of religious
holidays, you can set any (or all) of the variables
`all-christian-calendar-holidays', `all-hebrew-calendar-holidays', or
`all-islamic-calendar-holidays' to `t'. If you want to eliminate the
religious holidays, set any or all of the corresponding variables
`christian-holidays', `hebrew-holidays', and `islamic-holidays' to
`nil'.
You can set the variable
`other-holidays' to any list of holidays. This list, normally empty,
is intended for your use.
Each of the lists
(`general-holidays'), (`local-holidays'), (`christian-holidays'),
(`hebrew-holidays'), (`islamic-holidays'),and (`other-holidays') is a
list of "holiday forms", each holiday form describing a holiday (or
sometimes a list of holidays). Holiday forms may have the following
formats:
`(fixed MONTH DAY STRING)'
A fixed date on the Gregorian
calendar. MONTH and DAY are
numbers, STRING is the name of
the holiday.
`(float MONTH DAYNAME K STRING)'
The Kth DAYNAME in MONTH on the
Gregorian calendar (DAYNAME=0
for Sunday, and so on);
negative K means count back
from the end of the month.
sTRING is the name of the
holiday.
`(hebrew MONTH DAY STRING)'
A fixed date on the Hebrew
calendar. MONTH and DAY are
numbers, STRING is the name of
the holiday.
`(islamic MONTH DAY STRING)'
A fixed date on the Islamic
calendar. MONTH and DAY are
numbers, STRING is the name of
the holiday.
`(julian MONTH DAY STRING)'
A fixed date on the Julian
calendar. MONTH and DAY are
numbers, STRING is the name of
the holiday.
`(sexp SEXP STRING)'
SEXP is a Lisp expression that
should use the variable `year'
to compute the date of a
holiday, or `nil' if the
holiday doesn't happen this
year. The value represents the
date as a list of the form
`(MONTH DAY YEAR)'. STRING is
the name of the holiday.
`(if BOOLEAN HOLIDAY-FORM &optional HOLIDAY-FORM)'
A choice between two holidays
based on the value of BOOLEAN.
`(FUNCTION &optional ARGS)'
Dates requiring special
computation; ARGS, if any, are
passed in a list to the
function
`calendar-holiday-function-function'.
For example, suppose you want to
add Bastille Day, celebrated in France on July 14. You can do this by
adding the following line to your `.emacs' file:
(setq other-holidays '((fixed 7 14 "Bastille Day")))
The holiday form `(fixed 7 14
"Bastille Day")' specifies the fourteenth day of the seventh month
(July).
Many holidays occur on a specific
day of the week, at a specific time of month. Here is a holiday form
describing Hurricane Supplication Day, celebrated in the Virgin Islands
on the fourth Monday in August:
(float 8 1 4 "Hurricane Supplication Day")
Here the 8 specifies August, the 1
specifies Monday (Sunday is 0, Tuesday is 2, and so on), and the 4
specifies the fourth occurrence in the month (1 specifies the first
occurrence, 2 the second occurrence, -1 the last occurrence, -2 the
second-to-last occurrence, and so on).
You can specify holidays that
occur on fixed days of the Hebrew, Islamic, and Julian calendars too.
For example,
(setq other-holidays
'((hebrew 10 2 "Last day of Hanukkah")
(islamic 3 12 "Mohammed's Birthday")
(julian 4 2 "Jefferson's Birthday")))
adds the last day of Hanukkah (since
the Hebrew months are numbered with 1 starting from Nisan), the Islamic
feast celebrating Mohammed's birthday (since the Islamic months are
numbered from 1 starting with Muharram), and Thomas Jefferson's
birthday, which is 2 April 1743 on the Julian calendar.
To include a holiday
conditionally, use either the `if' or the `sexp' form. For example,
American presidential elections occur on the first Tuesday after the
first Monday in November of years divisible by 4:
(sexp (if (= 0 (% year 4))
(calendar-gregorian-from-absolute
(1+ (calendar-dayname-on-or-before
1 (+ 6 (calendar-absolute-from-gregorian
(list 11 1 year))))))
"US Presidential Election"))
or
(if (= 0 (% displayed-year 4))
(fixed 11
(extract-calendar-day
(calendar-gregorian-from-absolute
(1+ (calendar-dayname-on-or-before
1 (+ 6 (calendar-absolute-from-gregorian
(list 11 1 displayed-year)))))))
"US Presidential Election"))
Some holidays just don't fit into
any of these forms because special calculations are involved in their
determination. In such cases you must write a Lisp function to do the
calculation. The function should return a (possibly empty) list of the
relevant Gregorian dates among the range visible in the calendar
window, with descriptive strings, like this:
(((6 27 1991) "Lunar Eclipse") ((7 11 1991) "Solar Eclipse") ... )
File: elisp, Node: Date Display Format, Next: Time Display Format, Prev: Holiday Customizing, Up: Calendar
Date Display Format
===================
You can customize the manner of
displaying dates in the diary, in mode lines, and in messages by setting
`calendar-date-display-form'. This variable is a list of expressions
that can involve the variables `month', `day', and `year', all numbers
in string form, and `monthname' and `dayname', both alphabetic strings.
In the American style, the default value of this list is as follows:
((if dayname (concat dayname ", ")) monthname " " day ", " year)
while in the European style this
value is the default:
((if dayname (concat dayname ", ")) day " " monthname " " year)
The ISO standard date
representation is this:
(year "-" month "-" day)
This specifies a typical American
format:
(month "/" day "/" (substring year -2))
File: elisp, Node: Time Display Format, Next: Daylight Savings, Prev: Date Display Format, Up: Calendar
Time Display Format
===================
In the calendar, diary, and
related buffers, Emacs displays times of day in the conventional
American style with the hours from 1 through 12, minutes, and either
`am' or `pm'. If you prefer the "military" (European) style of writing
times--in which the hours go from 00 to 23--you can alter the variable
`calendar-time-display-form'. This variable is a list of expressions
that can involve the variables `12-hours', `24-hours', and `minutes',
all numbers in string form, and `am-pm' and `time-zone', both
alphabetic strings. The default definition of
`calendar-time-display-form' is as follows:
(12-hours ":" minutes am-pm (if time-zone " (") time-zone (if time-zone ")"))
Setting
`calendar-time-display-form' to
(24-hours ":" minutes (if time-zone " (") time-zone (if time-zone ")"))
gives military-style times like
`21:07 (UT)' if time zone names are defined, and times like `21:07' if
they are not.
File: elisp, Node: Daylight Savings, Next: Diary Customizing, Prev: Time Display Format, Up: Calendar
Daylight Savings Time
=====================
Emacs understands the difference
between standard time and daylight savings time--the times given for
sunrise, sunset, solstices, equinoxes, and the phases of the moon take
that into account. The default starting and stopping dates for
daylight savings time are the present-day American rules of the first
Sunday in April until the last Sunday in October, but you can specify
whatever rules you want by setting `calendar-daylight-savings-starts'
and `calendar-daylight-savings-ends'. Their values should be Lisp
expressions that refer to the variable `year', and evaluate to the
Gregorian date on which daylight savings time starts or (respectively)
ends, in the form of a list `(MONTH DAY YEAR)'.
Emacs uses these expressions to
determine the starting date of daylight savings time for the holiday
list and for correcting times of day in the solar and lunar
calculations.
The default value of
`calendar-daylight-savings-starts' is this,
(calendar-nth-named-day 1 0 4 year)
which computes the first 0th day
(Sunday) of the fourth month (April) in the year specified by `year'.
If daylight savings time were changed to start on October 1, you would
set `calendar-daylight-savings-starts' to
(list 10 1 year)
For a more complex example,
suppose daylight savings time begins on the first of Nisan on the
Hebrew calendar. You would set `calendar-daylight-savings-starts' to
(calendar-gregorian-from-absolute
(calendar-absolute-from-hebrew
(list 1 1 (+ year 3760))))
because Nisan is the first month in
the Hebrew calendar and the Hebrew year differs from the Gregorian year
by 3760 at Nisan.
If there is no daylight savings
time at your location, or if you want all times in standard time, set
`calendar-daylight-savings-starts' and `calendar-daylight-savings-ends'
to `nil'.
File: elisp, Node: Diary Customizing, Next: Hebrew/Islamic Entries, Prev: Daylight Savings, Up: Calendar
Customizing the Diary
=====================
Ordinarily, the mode line of the
diary buffer window indicates any holidays that fall on the date of the
diary entries. The process of checking for holidays can take several
seconds, so including holiday information delays the display of the
diary buffer noticeably. If you'd prefer to have a faster display of
the diary buffer but without the holiday information, set the variable
`holidays-in-diary-buffer' to `nil'.
The variable
`number-of-diary-entries' controls the number of days of diary entries
to be displayed at one time. It affects the initial display when
`view-diary-entries-initially' is `t', as well as the command `M-x
diary'. For example, the default value is 1, which says to display
only the current day's diary entries. If the value is 2, both the
current day's and the next day's entries are displayed. The value can
also be a vector of seven elements: if the value is `[0 2 2 2 2 4 1]'
then no diary entries appear on Sunday, the current date's and the next
day's diary entries appear Monday through Thursday, Friday through
Monday's entries appear on Friday, while on Saturday only that day's
entries appear.
The variable
`print-diary-entries-hook' is a normal hook run after preparation of a
temporary buffer containing just the diary entries currently visible in
the diary buffer. (The other, irrelevant diary entries are really
absent from the temporary buffer; in the diary buffer, they are merely
hidden.) The default value of this hook does the printing with the
command `lpr-buffer'. If you want to use a different command to do the
printing, just change the value of this hook. Other uses might
include, for example, rearranging the lines into order by day and time.
You can customize the form of
dates in your diary file, if neither the standard American nor European
styles suits your needs, by setting the variable `diary-date-forms'.
This variable is a list of forms of dates recognized in the diary file.
Each form is a list of regular expressions (*note Syntax of Regular
Expressions: Rexgexps.) and the variables `month', `day', `year',
`monthname', and `dayname'. The variable `monthname' matchs the name
of the month, capitalized or not, or its three-letter abbreviation,
followed by a period or not; it matches `*'. Similarly, `dayname'
matchs the name of the day, capitalized or not, or its three-letter
abbreviation, followed by a period or not. The variables `month',
`day', and `year' match those numerical values, preceded by arbitrarily
many zeros; they also match `*'. The default value of
`diary-date-forms' in the American style is
((month "/" day "[^/0-9]")
(month "/" day "/" year "[^0-9]")
(monthname " *" day "[^,0-9]")
(monthname " *" day ", *" year "[^0-9]")
(dayname "\\W"))
Emacs matches of the diary entries
with the date forms is done with the standard syntax table from
Fundamental mode (*note Syntax::.), but with the `*' changed so that it
is a word constituent.
The forms on the list must be
*mutually exclusive* and must not match any portion of the diary entry
itself, just the date. If, to be mutually exclusive, the pattern must
match a portion of the diary entry itself, the first element of the
form *must* be `backup'. This causes the date recognizer to back up to
the beginning of the current word of the diary entry. Even if you use
`backup', the form must absolutely not match more than a portion of the
first word of the diary entry. The default value of `diary-date-forms'
in the European style is this list:
((day "/" month "[^/0-9]")
(day "/" month "/" year "[^0-9]")
(backup day " *" monthname "\\W+\\<[^*0-9]")
(day " *" monthname " *" year "[^0-9]")
(dayname "\\W"))
Notice the use of `backup' in the
middle form because part of the diary entry must be matched to
distinguish this form from the following one.
File: elisp, Node: Hebrew/Islamic Entries, Next: Fancy Diary Display, Prev: Diary Customizing, Up: Calendar
Hebrew- and Islamic-Date Diary Entries
======================================
Your diary file can have entries
based on Hebrew or Islamic dates, as well as entries based on our usual
Gregorian calendar. However, because the processing of such entries is
time-consuming and most people don't need them, you must customize the
processing of your diary file to specify that you want such entries
recognized. If you want Hebrew-date diary entries, for example, you
must include these lines in your `.emacs' file:
(setq nongregorian-diary-listing-hook 'list-hebrew-diary-entries)
(setq nongregorian-diary-marking-hook 'mark-hebrew-diary-entries)
If you want Islamic-date entries,
include these lines in your `.emacs' file:
(setq nongregorian-diary-listing-hook 'list-islamic-diary-entries)
(setq nongregorian-diary-marking-hook 'mark-islamic-diary-entries)
If you want both Hebrew- and
Islamic-date entries, include these lines:
(setq nongregorian-diary-listing-hook
'(list-hebrew-diary-entries list-islamic-diary-entries))
(setq nongregorian-diary-marking-hook
'(mark-hebrew-diary-entries mark-islamic-diary-entries))
Hebrew- and Islamic-date diary
entries have the same formats as Gregorian-date diary entries, except
that the date must be preceded with an `H' for Hebrew dates and an `I'
for Islamic dates. Moreover, because the Hebrew and Islamic month
names are not uniquely specified by the first three letters, you may
not abbreviate them. For example, a diary entry for the Hebrew date
Heshvan 25 could look like
HHeshvan 25 Happy Hebrew birthday!
and would appear in the diary for
any date that corresponds to Heshvan 25 on the Hebrew calendar.
Similarly, an Islamic-date diary entry might be
IDhu al-Qada 25 Happy Islamic birthday!
and would appear in the diary for
any date that corresponds to Dhu al-Qada 25 on the Islamic calendar.
As with Gregorian-date diary
entries, Hebrew- and Islamic-date entries are nonmarking if they are
preceded with an ampersand (`&').
There are commands to help you in
making Hebrew- and Islamic-date entries to your diary:
`i h d'
Add a diary entry for the
Hebrew date corresponding to
the selected date
(`insert-hebrew-diary-entry').
`i h m'
Add a diary entry for the day
of the Hebrew month
corresponding to the selected
date
(`insert-monthly-hebrew-diary-entry').
`i h y'
Add a diary entry for the day
of the Hebrew year
corresponding to the selected
date
(`insert-yearly-hebrew-diary-entry').
`i i d'
Add a diary entry for the
Islamic date corresponding to
the selected date
(`insert-islamic-diary-entry').
`i i m'
Add a diary entry for the day
of the Islamic month
corresponding to the selected
date
(`insert-monthly-islamic-diary-entry').
`i i y'
Add a diary entry for the day
of the Islamic year
corresponding to the selected
date
(`insert-yearly-islamic-diary-entry').
These commands work exactly like
the corresponding commands for ordinary diary entries: Move point to a
date in the calendar window and the above commands insert the Hebrew or
Islamic date (corresponding to the date indicated by point) at the end
of your diary file and you can then type the diary entry. If you want
the diary entry to be nonmarking, give a numeric argument to the
command.
File: elisp, Node: Fancy Diary Display, Next: Including Diary Files, Prev: Hebrew/Islamic Entries, Up: Calendar
Fancy Diary Display
===================
Diary display works by preparing
the diary buffer and then running the hook `diary-display-hook'. The
default value of this hook hides the irrelevant diary entries and then
displays the buffer (`simple-diary-display'). However, if you specify
the hook as follows,
(add-hook 'diary-display-hook 'fancy-diary-display)
then fancy mode displays diary
entries and holidays by copying them into a special buffer that exists
only for display. Copying provides an opportunity to change the
displayed text to make it prettier--for example, to sort the entries by
the dates they apply to.
As with simple diary display, you
can print a hard copy of the buffer with `print-diary-entries'. To
print a hard copy of a day-by-day diary for a week by positioning point
on Sunday of that week, type `7 d' and then do `M-x
print-diary-entries'. As usual, the inclusion of the holidays slows
down the display slightly; you can speed things up by setting the
variable `holidays-in-diary-buffer' to `nil'.
Ordinarily, the fancy diary
buffer does not show days for which there are no diary entries, even if
that day is a holiday. If you want such days to be shown in the fancy
diary buffer, set the variable `diary-list-include-blanks' to `t'.
If you use the fancy diary
display, you can use the normal hook `list-diary-entries-hook' to sort
each day's diary entries by their time of day. Add this line to your
`.emacs' file:
(add-hook 'list-diary-entries-hook 'sort-diary-entries)
For each day, this sorts diary
entries that begin with a recognizable time of day according to their
times. Diary entries without times come first within each day.
File: elisp, Node: Included Diary Files
Included Diary Files
====================
If you use the fancy diary
display, you can have diary entries from other files included with your
own by an "include" mechanism. This facility makes possible the
sharing of common diary files among groups of users. Lines in the
diary file of this form:
#include "FILENAME"
includes the diary entries from the
file FILENAME in the fancy diary buffer (because the ordinary diary
buffer is just the buffer associated with your diary file, you cannot
use the include mechanism unless you use the fancy diary buffer). The
include mechanism is recursive, by the way, so that included files can
include other files, and so on; you must be careful not to have a cycle
of inclusions, of course. To enable the include facility, add lines as
follows to your `.emacs' file:
(add-hook 'list-diary-entries-hook 'include-other-diary-files)
(add-hook 'mark-diary-entries-hook 'mark-included-diary-files)